package Vista;

import Entidades.Historica;
import Entidades.PantallaAplicacion;
import Entidades.Proveedor;
import Logica.FactoryVistas;
import Logica.LogicaAplicacion;
import Logica.LogicaLugar;
import Logica.LogicaProveedorPregunta;
import Logica.LogicaVelocidad;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Puma
 */
public class RegistroEnlancesDedicados extends javax.swing.JFrame implements Runnable{

    private Pattern patron = Pattern.compile("[A-Z,a-z,&%$#@!()*^]");
    private Matcher matcher = null;
    private ArrayList<Proveedor> proveedores = new ArrayList<Proveedor>();
    private ArrayList<Historica> inserts = new ArrayList<Historica>();
    private int enlancesTotales = 0;
    private Boolean esUnProveedor = false;
    private int minutos = 0, segundos = 0, horas = 0;
    private Boolean inicio = true;
    private Thread t;
    private ArrayList servicios = null;
    private int pregunta = 4;
    private LogicaProveedorPregunta logicaProveedorPregunta = new LogicaProveedorPregunta();
    private Historica h;
    private int posicionActual;
    private Boolean fuePrevia = false;
    private Boolean estadoFinal = false;
    private Boolean primeraVez = true;
    
    /** Creates new form RegistroEnlancesDedicados */

    public RegistroEnlancesDedicados(int minutos,int segundos, int horas, ArrayList servicios){
        initComponents();       
        this.minutos = minutos;
        this.segundos = segundos;
        this.horas = horas;
        this.servicios = servicios;
        iniciarReloj();
    }

    public RegistroEnlancesDedicados(int minutos,int segundos, int horas, ArrayList servicios,int posicionActual){
        initComponents();
        this.minutos = minutos;
        this.segundos = segundos;
        this.horas = horas;
        this.servicios = servicios;
        this.setPosicionActual(posicionActual);
        iniciarReloj();
        agregarPantalla();
        jBAgregarProveedorNuevo.setEnabled(false);
        System.out.println("Posicion actual: "+posicionActual);
        this.jComboPaisesCiudadesDinamico.setVisible(false);
            this.jComboVelocidadesDinamico.setVisible(false);
            this.jCProveedores.setVisible(false);
            this.jTCantidad.setVisible(false);
            this.jBAgregarTabla.setVisible(false);
    }

    public Boolean getEstadoFinal() {
        return estadoFinal;
    }

    public void setEstadoFinal(Boolean estadoFinal) {
        this.estadoFinal = estadoFinal;
    }
    
    public RegistroEnlancesDedicados() {
        initComponents();
        jBAgregarProveedorNuevo.setEnabled(false);
    }

    private void iniciarReloj(){
        t = new Thread(this);
        t.start();
    }

     private void agregarPantalla(){
        LogicaAplicacion.agregarPantallaLista(new PantallaAplicacion(this, pregunta));
    }

    public Boolean getFuePrevia() {
        return fuePrevia;
    }

    public void setFuePrevia(Boolean fuePrevia) {
        this.fuePrevia = fuePrevia;
    }

    public ArrayList<Historica> getInserts() {
        return inserts;
    }

    public void setInserts(ArrayList<Historica> inserts) {
        this.inserts = inserts;
    }

     public void hacerVisible(Boolean visible, int posicionActual){
        this.setPosicionActual(posicionActual);
        this.setFuePrevia(true);
        this.setInserts(new ArrayList<Historica>());
        this.setVisible(visible);
        System.out.println("Posicion actual: "+posicionActual);

        if (this.getEstadoFinal()){
            this.jComboPaisesCiudadesDinamico.setVisible(true);
            this.jComboVelocidadesDinamico.setVisible(true);
            this.jCProveedores.setVisible(true);
            this.jTCantidad.setVisible(true);
            this.jBAgregarTabla.setVisible(true);
         }
         else {
            this.jComboPaisesCiudadesDinamico.setVisible(false);
            this.jComboVelocidadesDinamico.setVisible(false);
            this.jCProveedores.setVisible(false);
            this.jTCantidad.setVisible(false);
            this.jBAgregarTabla.setVisible(false);
         }
    }

    public void hacerVisibleDespuesSiguiente(Boolean visible, int posicionActual){
        this.setPosicionActual(posicionActual);
        this.setInserts(new ArrayList<Historica>());
        this.setVisible(visible);
        System.out.println("Posicion actual: "+posicionActual);

        if (this.getEstadoFinal()){
            this.jComboPaisesCiudadesDinamico.setVisible(true);
            this.jComboVelocidadesDinamico.setVisible(true);
            this.jCProveedores.setVisible(true);
            this.jTCantidad.setVisible(true);
            this.jBAgregarTabla.setVisible(true);
         }
         else {
            this.jComboPaisesCiudadesDinamico.setVisible(false);
            this.jComboVelocidadesDinamico.setVisible(false);
            this.jCProveedores.setVisible(false);
            this.jTCantidad.setVisible(false);
            this.jBAgregarTabla.setVisible(false);
         }
    }

    public int getPosicionActual() {
        return posicionActual;
    }

    private void setPosicionActual(int posicionActual) {
        this.posicionActual = posicionActual;
    }
    
     private String sustituirAcentos(String input) {
        // Cadena de caracteres original a sustituir.
        String original = "áàäéèëíìïóòöúùuñÁÀÄÉÈËÍÌÏÓÒÖÚÙÜÑçÇ";
        // Cadena de caracteres ASCII que reemplazarán los originales.
        String ascii = "aaaeeeiiiooouuunAAAEEEIIIOOOUUUNcC";
        String output = input;
        for (int i = 0; i < original.length(); i++) {
            // Reemplazamos los caracteres especiales.
            output = output.replace(original.charAt(i), ascii.charAt(i));
        }//for i
        return output;
    }
     
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLayeredPane3 = new javax.swing.JLayeredPane();
        jLayeredPane2 = new javax.swing.JLayeredPane();
        jLabel3 = new javax.swing.JLabel();
        jComboVelocidades = new javax.swing.JComboBox();
        jLabel4 = new javax.swing.JLabel();
        jComboPaisesCiudades = new javax.swing.JComboBox();
        jLabel6 = new javax.swing.JLabel();
        jLCuentaActualizada = new javax.swing.JLabel();
        jTEnlancesProveedor = new javax.swing.JTextField();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTInformacionProveedores = new javax.swing.JTable();
        jBAgregarInfoTabla = new javax.swing.JButton();
        jLabel10 = new javax.swing.JLabel();
        jBPrev = new javax.swing.JButton();
        jBAceptar = new javax.swing.JButton();
        jBAgregarTabla = new javax.swing.JButton();
        jComboVelocidadesDinamico = new javax.swing.JComboBox();
        jTCantidad = new javax.swing.JTextField();
        jComboPaisesCiudadesDinamico = new javax.swing.JComboBox();
        jCProveedores = new javax.swing.JComboBox();
        jCProveedoresTabla = new javax.swing.JComboBox();
        jLInformacionProveedor1 = new javax.swing.JLabel();
        jLayeredPane1 = new javax.swing.JLayeredPane();
        jCInfosat = new javax.swing.JCheckBox();
        jCNetUno = new javax.swing.JCheckBox();
        jCNGTV = new javax.swing.JCheckBox();
        jCCantv = new javax.swing.JCheckBox();
        jCGlobal = new javax.swing.JCheckBox();
        jCMovistar = new javax.swing.JCheckBox();
        jCBT = new javax.swing.JCheckBox();
        jCEnelven = new javax.swing.JCheckBox();
        jCAES = new javax.swing.JCheckBox();
        jCOtro = new javax.swing.JCheckBox();
        jCMCI = new javax.swing.JCheckBox();
        jLabel5 = new javax.swing.JLabel();
        jCBantel = new javax.swing.JCheckBox();
        jLabel11 = new javax.swing.JLabel();
        jBFinalizarSeleccion = new javax.swing.JButton();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTComentarios = new javax.swing.JTextArea();
        jLabel12 = new javax.swing.JLabel();
        jTOtros = new javax.swing.JTextField();
        jBAgregarProveedorNuevo = new javax.swing.JButton();
        jLLogo = new javax.swing.JLabel();
        jTEnlances = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        jLTitulo = new javax.swing.JLabel();
        jLSponsor = new javax.swing.JLabel();
        jLabel9 = new javax.swing.JLabel();
        jLTimer = new javax.swing.JLabel();
        jBAceptarCantidad = new javax.swing.JButton();
        jLabel8 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel3.setText("Ciudad / Estado:");
        jLabel3.setBounds(10, 100, 110, 20);
        jLayeredPane2.add(jLabel3, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jComboVelocidades.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "- Seleccione", "<= 64 Kbps", "65 a 256 Kbps", "256 Kbps o = 2048 Mbps", "2049 Kbps a 10 Mbps", "> 10 Mbps a 100 Mbps", "> a 100 Mbps y <= a 1 Gbps", ">  a 1Gbps y <= a 2.5 Gbps", "> a 2.5 Gbps", "No sabe / No contesta" }));
        jComboVelocidades.setBounds(140, 130, 160, 20);
        jLayeredPane2.add(jComboVelocidades, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel4.setText("Velocidades:");
        jLabel4.setBounds(10, 130, 100, 20);
        jLayeredPane2.add(jLabel4, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jComboPaisesCiudades.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "- Seleccione", "D. Capital", "Amazonas", "Anzoategui", "Apure", "Aragua", "Barinas", "Bolivar", "Carabobo", "Cojedes", "D. Amacuro", "Falcon", "Guarico", "Lara", "Merida", "Miranda", "Monagas", "N. Esparta", "Portuguesa", "Sucre", "Tachira", "Trujillo", "Yaracuy", "Vargas", "Zulia", "No sabe / No contesta" }));
        jComboPaisesCiudades.setBounds(140, 100, 160, 20);
        jLayeredPane2.add(jComboPaisesCiudades, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel6.setText("Cantidad de Enlaces:");
        jLabel6.setBounds(10, 70, 120, 20);
        jLayeredPane2.add(jLabel6, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLCuentaActualizada.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        jLCuentaActualizada.setText("Enlaces faltantes por registrar: X");
        jLCuentaActualizada.setBounds(20, 210, 290, 30);
        jLayeredPane2.add(jLCuentaActualizada, javax.swing.JLayeredPane.DEFAULT_LAYER);
        jTEnlancesProveedor.setBounds(140, 70, 38, 20);
        jLayeredPane2.add(jTEnlancesProveedor, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jTInformacionProveedores.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Proveedor", "Ciudad / Estado", "Cantidad", "Velocidades"
            }
        ));
        jScrollPane1.setViewportView(jTInformacionProveedores);

        jScrollPane1.setBounds(350, 30, 480, 181);
        jLayeredPane2.add(jScrollPane1, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jBAgregarInfoTabla.setText("Agregar a tabla >");
        jBAgregarInfoTabla.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBAgregarInfoTablaActionPerformed(evt);
            }
        });
        jBAgregarInfoTabla.setBounds(170, 170, 150, 23);
        jLayeredPane2.add(jBAgregarInfoTabla, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel10.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel10.setText("De los enlaces que posee, cuántos tiene con cada proveedor, en cuáles estados del país se encuetran ubidados y cuáles son las velocidades contratadas");
        jLabel10.setBounds(0, 10, 880, 14);
        jLayeredPane2.add(jLabel10, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jBPrev.setText("< Prev");
        jBPrev.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBPrevActionPerformed(evt);
            }
        });
        jBPrev.setBounds(710, 260, 65, 23);
        jLayeredPane2.add(jBPrev, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jBAceptar.setText("Aceptar");
        jBAceptar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBAceptarActionPerformed(evt);
            }
        });
        jBAceptar.setBounds(780, 260, 71, 23);
        jLayeredPane2.add(jBAceptar, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jBAgregarTabla.setText("+");
        jBAgregarTabla.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBAgregarTablaActionPerformed(evt);
            }
        });
        jBAgregarTabla.setBounds(830, 220, 40, 23);
        jLayeredPane2.add(jBAgregarTabla, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jComboVelocidadesDinamico.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "- Seleccione", "<= 64 Kbps", "65 a 256 Kbps", "2049 Kbps a 10 Mbps", "> 10 Mbps a 100 Mbps", "> a 100 Mbps y <= a 1 Gbps", ">  a 1Gbps y <= a 2.5 Gbps", "> a 2.5 Gbps", "No sabe / No contesta" }));
        jComboVelocidadesDinamico.setBounds(710, 220, 110, 20);
        jLayeredPane2.add(jComboVelocidadesDinamico, javax.swing.JLayeredPane.DEFAULT_LAYER);
        jTCantidad.setBounds(600, 220, 90, 20);
        jLayeredPane2.add(jTCantidad, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jComboPaisesCiudadesDinamico.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "- Seleccione", "D. Capital", "Amazonas ", "Anzoategui", "Apure", "Aragua", "Barinas", "Bolivar", "Carabobo", "Cojedes", "D. Amacuro", "Falcon", "Guarico", "Lara", "Merida", "Miranda", "Monagas", "N. Esparta", "Portuguesa", "Sucre", "Tachira", "Trujillo", "Yaracuy", "Vargas", "Zulia", "No sabe / No contesta" }));
        jComboPaisesCiudadesDinamico.setBounds(480, 220, 100, 20);
        jLayeredPane2.add(jComboPaisesCiudadesDinamico, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCProveedores.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "- Seleccione", "Cantv", "Movistar / Telefonica", "BT Latam (Comsat)", "Global Crossing (mpsat)", "Bantel", "MCI / Verizon", "Infosat", "Net Uno", "NGTV", "AES", "Enelven", "Otro" }));
        jCProveedores.setBounds(350, 220, 110, 20);
        jLayeredPane2.add(jCProveedores, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCProveedoresTabla.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "- Seleccione" }));
        jCProveedoresTabla.setBounds(140, 40, 160, 20);
        jLayeredPane2.add(jCProveedoresTabla, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLInformacionProveedor1.setText("Proveedor:");
        jLInformacionProveedor1.setBounds(10, 40, 90, 14);
        jLayeredPane2.add(jLInformacionProveedor1, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLayeredPane2.setBounds(10, 380, 880, 290);
        jLayeredPane3.add(jLayeredPane2, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCInfosat.setBackground(new java.awt.Color(255, 255, 255));
        jCInfosat.setText("Infosat");
        jCInfosat.setBounds(210, 60, 140, 23);
        jLayeredPane1.add(jCInfosat, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCNetUno.setBackground(new java.awt.Color(255, 255, 255));
        jCNetUno.setText("Net Uno");
        jCNetUno.setBounds(210, 80, 140, 23);
        jLayeredPane1.add(jCNetUno, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCNGTV.setBackground(new java.awt.Color(255, 255, 255));
        jCNGTV.setText("NGTV");
        jCNGTV.setBounds(210, 100, 120, 23);
        jLayeredPane1.add(jCNGTV, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCCantv.setBackground(new java.awt.Color(255, 255, 255));
        jCCantv.setText("Cantv");
        jCCantv.setBounds(20, 60, 120, 23);
        jLayeredPane1.add(jCCantv, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCGlobal.setBackground(new java.awt.Color(255, 255, 255));
        jCGlobal.setText("Global Crossing (mpsat)");
        jCGlobal.setBounds(20, 120, 180, 23);
        jLayeredPane1.add(jCGlobal, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCMovistar.setBackground(new java.awt.Color(255, 255, 255));
        jCMovistar.setText("Movistar / Telefónica");
        jCMovistar.setBounds(20, 80, 180, 23);
        jLayeredPane1.add(jCMovistar, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCBT.setBackground(new java.awt.Color(255, 255, 255));
        jCBT.setText("BT Latam (Comsat)");
        jCBT.setBounds(20, 100, 180, 23);
        jLayeredPane1.add(jCBT, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCEnelven.setBackground(new java.awt.Color(255, 255, 255));
        jCEnelven.setText("Enelven");
        jCEnelven.setBounds(210, 140, 130, 20);
        jLayeredPane1.add(jCEnelven, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCAES.setBackground(new java.awt.Color(255, 255, 255));
        jCAES.setText("AES");
        jCAES.setBounds(210, 120, 140, 23);
        jLayeredPane1.add(jCAES, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCOtro.setBackground(new java.awt.Color(255, 255, 255));
        jCOtro.setText("Otro");
        jCOtro.setBounds(210, 160, 70, 23);
        jLayeredPane1.add(jCOtro, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCMCI.setBackground(new java.awt.Color(255, 255, 255));
        jCMCI.setText("MCI / Verizon");
        jCMCI.setBounds(20, 160, 170, 23);
        jLayeredPane1.add(jCMCI, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel5.setText("Comentarios Adicionales del entrevistado:");
        jLabel5.setBounds(420, 50, 310, 14);
        jLayeredPane1.add(jLabel5, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jCBantel.setBackground(new java.awt.Color(255, 255, 255));
        jCBantel.setText("Bantel");
        jCBantel.setBounds(20, 140, 170, 23);
        jLayeredPane1.add(jCBantel, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel11.setText("Proveedores:");
        jLabel11.setBounds(10, 40, 140, 14);
        jLayeredPane1.add(jLabel11, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jBFinalizarSeleccion.setText("Finalizar Selección");
        jBFinalizarSeleccion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBFinalizarSeleccionActionPerformed(evt);
            }
        });
        jBFinalizarSeleccion.setBounds(20, 190, 170, 23);
        jLayeredPane1.add(jBFinalizarSeleccion, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jTComentarios.setColumns(20);
        jTComentarios.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        jTComentarios.setRows(5);
        jScrollPane2.setViewportView(jTComentarios);

        jScrollPane2.setBounds(420, 70, 410, 140);
        jLayeredPane1.add(jScrollPane2, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel12.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel12.setText("¿Qué provedores de servicio dedicado esta contratando usted actualmente?");
        jLabel12.setBounds(0, 20, 530, 14);
        jLayeredPane1.add(jLabel12, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jTOtros.setText("- especifique -");
        jTOtros.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusGained(java.awt.event.FocusEvent evt) {
                jTOtrosFocusGained(evt);
            }
        });
        jTOtros.setBounds(280, 160, 100, 20);
        jLayeredPane1.add(jTOtros, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jBAgregarProveedorNuevo.setText("Agregar otro Proveedor");
        jBAgregarProveedorNuevo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBAgregarProveedorNuevoActionPerformed(evt);
            }
        });
        jBAgregarProveedorNuevo.setBounds(210, 190, 190, 23);
        jLayeredPane1.add(jBAgregarProveedorNuevo, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLayeredPane1.setBounds(10, 156, 850, 220);
        jLayeredPane3.add(jLayeredPane1, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLLogo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Vista/Imagenes/DatinvestLogo.png"))); // NOI18N
        jLLogo.setBounds(10, 10, 80, 80);
        jLayeredPane3.add(jLLogo, javax.swing.JLayeredPane.DEFAULT_LAYER);
        jTEnlances.setBounds(180, 130, 38, 20);
        jLayeredPane3.add(jTEnlances, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel1.setText("Cantidad de Enlaces:");
        jLabel1.setBounds(50, 120, 138, 40);
        jLayeredPane3.add(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLTitulo.setFont(new java.awt.Font("Tahoma", 3, 14)); // NOI18N
        jLTitulo.setText(".:: Instrumento de emprendedores - Planilla de enlaces dedicados::. ");
        jLTitulo.setBounds(90, 20, 590, 14);
        jLayeredPane3.add(jLTitulo, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLSponsor.setText("Desarrollado para Datinvest C.A");
        jLSponsor.setBounds(110, 40, 220, 14);
        jLayeredPane3.add(jLSponsor, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel9.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jLabel9.setText("¿Cuantos enlaces dedicados tiene contratados? ");
        jLabel9.setBounds(10, 100, 560, 14);
        jLayeredPane3.add(jLabel9, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLTimer.setText("jLabel12");
        jLTimer.setBounds(790, 20, 60, 14);
        jLayeredPane3.add(jLTimer, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jBAceptarCantidad.setText("Aceptar");
        jBAceptarCantidad.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBAceptarCantidadActionPerformed(evt);
            }
        });
        jBAceptarCantidad.setBounds(230, 130, 100, 23);
        jLayeredPane3.add(jBAceptarCantidad, javax.swing.JLayeredPane.DEFAULT_LAYER);

        jLabel8.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Vista/Imagenes/fondoBlanco.png"))); // NOI18N
        jLabel8.setText("jLabel8");
        jLabel8.setBounds(0, 0, 890, 670);
        jLayeredPane3.add(jLabel8, javax.swing.JLayeredPane.DEFAULT_LAYER);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jLayeredPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 887, javax.swing.GroupLayout.PREFERRED_SIZE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jLayeredPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 384, Short.MAX_VALUE)
        );

        setSize(new java.awt.Dimension(903, 422));
        setLocationRelativeTo(null);
    }// </editor-fold>//GEN-END:initComponents

    private void jBFinalizarSeleccionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBFinalizarSeleccionActionPerformed
if (JOptionPane.showConfirmDialog(null,"¿Está seguro de los datos suministrados?"
            + "","Información",
            JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION){

    jCProveedoresTabla.removeAllItems();
    jCProveedoresTabla.addItem("- Seleccione");
    
    if (jCCantv.isSelected()){
            proveedores.add(new Proveedor(jCCantv.getText()));
            jCProveedoresTabla.addItem("Cantv");
    }
        if (jCAES.isSelected()){
            proveedores.add(new Proveedor(jCAES.getText()));
            jCProveedoresTabla.addItem("AES");
        }
        if (jCBT.isSelected()){
            proveedores.add(new Proveedor(jCBT.getText()));
            jCProveedoresTabla.addItem("BT Latam (Comsat)");
        }
        if (jCBantel.isSelected()){
            proveedores.add(new Proveedor(jCBantel.getText()));
            jCProveedoresTabla.addItem("Bantel");
        }
        if (jCEnelven.isSelected()){
            proveedores.add(new Proveedor(jCEnelven.getText()));
            jCProveedoresTabla.addItem("Enelven");
        }
        if (jCGlobal.isSelected()){
            proveedores.add(new Proveedor(jCGlobal.getText()));
            jCProveedoresTabla.addItem("Global Crossing (mpsat)");
        }
        if (jCInfosat.isSelected()){
            proveedores.add(new Proveedor(jCInfosat.getText()));
            jCProveedoresTabla.addItem("Infosat");
        }
        if (jCNGTV.isSelected()){
            proveedores.add(new Proveedor(jCNGTV.getText()));
            jCProveedoresTabla.addItem("NGTV");
        }
        if (jCMovistar.isSelected()){
            proveedores.add(new Proveedor(jCMovistar.getText()));
            jCProveedoresTabla.addItem("Movistar / Telefonica");
        }
        if (jCMCI.isSelected()){
            proveedores.add(new Proveedor(jCMCI.getText()));
            jCProveedoresTabla.addItem("MCI / Verizon");
        }
        if (jCOtro.isSelected()){
            proveedores.add(new Proveedor(jCOtro.getText()));
            jCProveedoresTabla.addItem("Otro");
        }
        if (jCNetUno.isSelected()){
            proveedores.add(new Proveedor(jCNetUno.getText()));
            jCProveedoresTabla.addItem("Net Uno");
        }

      if (!proveedores.isEmpty()){

           // jLEnlacesFaltantes.setText("Cantidad de enlances a registrar = "+enlancesTotales);

            if (proveedores.size() == 1)
                esUnProveedor = true;

            this.setMinimumSize(new Dimension(903,730));
                    Dimension pantalla = Toolkit.getDefaultToolkit().getScreenSize();
                    Dimension ventana = getSize();
                this.setLocation((pantalla.width - ventana.width) / 2,
                                (pantalla.height - ventana.height) / 2);

            bloquearRadios();
            jBAgregarProveedorNuevo.setEnabled(true);
            jBFinalizarSeleccion.setEnabled(false);
            jCProveedoresTabla.setEnabled(true);
            jTEnlancesProveedor.setEnabled(true);
            jComboVelocidades.setEnabled(true);
            jComboPaisesCiudades.setEnabled(true);
            jBAgregarInfoTabla.setEnabled(true);
            
             jLCuentaActualizada.setText("Enlaces faltantes por registrar: "+enlancesTotales);
        }
      else
          JOptionPane.showMessageDialog(null,"Debe Seleccionar al menos "
                    + "un proveedor","Error",JOptionPane.ERROR_MESSAGE);
}
        
    }//GEN-LAST:event_jBFinalizarSeleccionActionPerformed

    private void jBAgregarInfoTablaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBAgregarInfoTablaActionPerformed

        // Validación para primer o último nodo.        
        
         if ((proveedores.size()-1)==0){
              esUnProveedor = true;
        }

     if (primeraVez){
         
        if  (!contieneLetras(jTEnlancesProveedor.getText())){

             if (enlancesTotales-Integer.parseInt(jTEnlancesProveedor.getText()) >= 0){
                
                enlancesTotales = enlancesTotales-Integer.parseInt(jTEnlancesProveedor.getText());
                
                jLCuentaActualizada.setText("Puertos faltantes por registrar: "+enlancesTotales);
                
            InsertarEnTabla(jCProveedoresTabla.getSelectedItem().toString(),
                            jTEnlancesProveedor.getText(),
                            jComboPaisesCiudades.getSelectedItem().toString(),
                            jComboVelocidades.getSelectedItem().toString()); // Insertar en tabla.
 
                 
                    jTEnlancesProveedor.setText("");
                    jCProveedoresTabla.setSelectedIndex(0);
                        jComboVelocidades.setSelectedIndex(0);
                        jComboPaisesCiudades.setSelectedIndex(0);
                }
             else
              JOptionPane.showMessageDialog(null,"No se pueden "
                      + "registrar esa cantidad de enlaces"
                    ,"Error",JOptionPane.ERROR_MESSAGE);  
             }
              else
            JOptionPane.showMessageDialog(null,"La cantidad debe ser numérica"
                    ,"Error",JOptionPane.ERROR_MESSAGE);
        }
      else
     {
          if  (!contieneLetras(jTEnlancesProveedor.getText())){         
                
            InsertarEnTabla(jCProveedoresTabla.getSelectedItem().toString(),
                            jTEnlancesProveedor.getText(),
                            jComboPaisesCiudades.getSelectedItem().toString(),
                            jComboVelocidades.getSelectedItem().toString()); // Insertar en tabla.
 
                 
                    jTEnlancesProveedor.setText("");
                    jCProveedoresTabla.setSelectedIndex(0);
                        jComboVelocidades.setSelectedIndex(0);
                        jComboPaisesCiudades.setSelectedIndex(0);
             
          }
          else
            JOptionPane.showMessageDialog(null,"La cantidad debe ser numérica"
                    ,"Error",JOptionPane.ERROR_MESSAGE);
     }    
    }//GEN-LAST:event_jBAgregarInfoTablaActionPerformed

    private void jBPrevActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBPrevActionPerformed
     try {
            this.setVisible(false);
            LogicaAplicacion.mostrarPantallaRegreso(this.getPosicionActual() - 1);
        } catch (Exception ex) {
            this.setVisible(true);
            JOptionPane.showMessageDialog(null,ex.getMessage());
        }
    }//GEN-LAST:event_jBPrevActionPerformed

    private void jBAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBAceptarActionPerformed
        primeraVez = false;
        actualizarTablaContenidoNuevo();
        LogicaAplicacion.actualizarPantalla(pregunta, this);

       if (!this.fuePrevia){
            System.out.println("Agregar la pantalla a la lista, y ya!");
            this.servicios.remove(0);
            FactoryVistas.obtenerSiguientePregunta(servicios, minutos, segundos, horas,this.getPosicionActual()+1).setVisible(true);
            this.setVisible(false);
        }
       else {
            System.out.println("No voy a remover de la lista de servicios, ni insertare en la lista... pero actualizare");
            LogicaAplicacion.mostrarPantallaSiguiente(this.getPosicionActual()+1);
            this.setVisible(false);
       }
    }//GEN-LAST:event_jBAceptarActionPerformed

    private void jBAgregarTablaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBAgregarTablaActionPerformed
     if (!contieneLetras(jTCantidad.getText())){
         InsertarEnTabla(jCProveedores.getSelectedItem().toString(),
                jTCantidad.getText(),
                jComboPaisesCiudadesDinamico.getSelectedItem().toString(),
                jComboVelocidadesDinamico.getSelectedItem().toString());
        jCProveedores.setSelectedIndex(0);
        jComboVelocidadesDinamico.setSelectedIndex(0);
        jComboPaisesCiudadesDinamico.setSelectedIndex(0);
        jTCantidad.setText("");
     }
     else JOptionPane.showMessageDialog(null,"No se pueden agregar campos no numéricos","ERROR",JOptionPane.ERROR_MESSAGE);
}//GEN-LAST:event_jBAgregarTablaActionPerformed

    private void jTOtrosFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jTOtrosFocusGained
       jTOtros.setText("");
    }//GEN-LAST:event_jTOtrosFocusGained

    private void jBAgregarProveedorNuevoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBAgregarProveedorNuevoActionPerformed
        jBAgregarProveedorNuevo.setEnabled(false);
        jBFinalizarSeleccion.setEnabled(true);

        if (!jCCantv.isSelected()){
            jCCantv.setEnabled(true);
        }
        if (!jCAES.isSelected()){
            jCAES.setEnabled(true);
        }
        if (!jCBT.isSelected()){
            jCBT.setEnabled(true);
        }
        if (!jCBantel.isSelected()){
            jCBantel.setEnabled(true);
        }
        if (!jCEnelven.isSelected()){
            jCEnelven.setEnabled(true);
        }
        if (!jCGlobal.isSelected()){
            jCGlobal.setEnabled(true);
        }
        if (!jCInfosat.isSelected()){
            jCInfosat.setEnabled(true);
        }
        if (!jCNGTV.isSelected()){
            jCNGTV.setEnabled(true);
        }
        if (!jCMovistar.isSelected()){
            jCMovistar.setEnabled(true);
        }
        if (!jCMCI.isSelected()){
            jCMCI.setEnabled(true);
        }
        if (!jCOtro.isSelected()){
            jCOtro.setEnabled(true);
        }
        if (!jCNetUno.isSelected()){
            jCNetUno.setEnabled(true);
        }
        
        jCProveedoresTabla.setEnabled(false);
            jTEnlancesProveedor.setEnabled(false);
            jComboVelocidades.setEnabled(false);
            jComboPaisesCiudades.setEnabled(false);
            jBAgregarInfoTabla.setEnabled(false);
    }//GEN-LAST:event_jBAgregarProveedorNuevoActionPerformed

    private void jBAceptarCantidadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBAceptarCantidadActionPerformed
        if (JOptionPane.showConfirmDialog(null,"¿Está seguro de la seleccion realizada?"
            + "","Información",
            JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION){
        if (!contieneLetras(jTEnlances.getText())){
            this.enlancesTotales = Integer.parseInt(jTEnlances.getText());
            jTEnlances.setEnabled(false);
        }
        else {
            JOptionPane.showMessageDialog(null,"La cantidad debe ser numérica"
                ,"Error",JOptionPane.ERROR_MESSAGE);
        }
        }
    }//GEN-LAST:event_jBAceptarCantidadActionPerformed

    private void actualizarTablaContenidoNuevo(){
          for (int i = 0; i < this.jTInformacionProveedores.getRowCount(); i++) {
                        
                      h = new Historica();
                      
                        for (int j = 0; j < this.jTInformacionProveedores.getColumnCount(); j++) {
                            
                            switch (j){
                                
                                case 0: h.setProveedor(this.jTInformacionProveedores.
                                      getValueAt(i,j).toString());
                                        break;
                                    
                                case 1: 
                                    if (!this.jTInformacionProveedores.
                                     getValueAt(i,j).toString().equals("No sabe / No contesta"))
                                      h.setLug_id(new LogicaLugar().obtenerIdLugar(
                                                    this.jTInformacionProveedores.
                                                    getValueAt(i,j).toString()));
                                    else 
                                        h.setLug_id(6);
                                        break;
                                    
                                case 2: h.setCantidad(Integer.parseInt(this.jTInformacionProveedores.
                                                    getValueAt(i,j).toString()));
                                        break;
                                    
                                case 3: h.setVelocidad(
                                                    this.jTInformacionProveedores.
                                                    getValueAt(i,j).toString());
                                        break;
                            } 
                
                        }
                        
                        this.getInserts().add(h);
                    }
          
           
                    LogicaAplicacion.setP6_2(obtenerEnlacesTotales());
                    
                    LogicaAplicacion.setP9f_1(obtenerEnlacesTotalesPorRegion(1));
                    LogicaAplicacion.setP9f_2(obtenerEnlacesTotalesPorRegion(2));
                    LogicaAplicacion.setP9f_3(obtenerEnlacesTotalesPorRegion(3));
                    LogicaAplicacion.setP9f_4(obtenerEnlacesTotalesPorRegion(4));
                    LogicaAplicacion.setP9f_5(obtenerEnlacesTotalesPorRegion(5));
                    LogicaAplicacion.setP9f_6(obtenerEnlacesTotalesPorRegion(6));    
                    
                    System.out.println("Totales por proveedor:");
          
            LogicaAplicacion.setP9_f1(contarEnlacesPorProveedor("Cantv"));
            LogicaAplicacion.setP9_f2(contarEnlacesPorProveedor("Movistar / Telefónica"));
            LogicaAplicacion.setP9_f3(contarEnlacesPorProveedor("BT Latam (Comsat)"));
            LogicaAplicacion.setP9_f4(contarEnlacesPorProveedor("Global Crossing (mpsat)"));
            LogicaAplicacion.setP9_f5(contarEnlacesPorProveedor("Bantel"));
            LogicaAplicacion.setP9_f6(contarEnlacesPorProveedor("MCI / Verizon"));
            LogicaAplicacion.setP9_f7(contarEnlacesPorProveedor("Infosat"));
            LogicaAplicacion.setP9_f8(contarEnlacesPorProveedor("Net Uno"));
            LogicaAplicacion.setP9_f9(contarEnlacesPorProveedor("NGTV"));
            LogicaAplicacion.setP9_f10(contarEnlacesPorProveedor("AES"));
            LogicaAplicacion.setP9_f11(contarEnlacesPorProveedor("Enelven"));
            LogicaAplicacion.setP9_f12(contarEnlacesPorProveedor("Otro"));
            
            				LogicaAplicacion.setP9a_1(contarEnlacesPorProveedorRegion("Cantv",1));
                    LogicaAplicacion.setP9a_2(contarEnlacesPorProveedorRegion("Movistar / Telefónica",1));
                    LogicaAplicacion.setP9a_3(contarEnlacesPorProveedorRegion("BT Latam (Comsat)",1));
                    LogicaAplicacion.setP9a_4(contarEnlacesPorProveedorRegion("Global Crossing (mpsat)",1));
                    LogicaAplicacion.setP9a_5(contarEnlacesPorProveedorRegion("Bantel",1));
                    LogicaAplicacion.setP9a_6(contarEnlacesPorProveedorRegion("MCI / Verizon",1));
                    LogicaAplicacion.setP9a_7(contarEnlacesPorProveedorRegion("Infosat",1));
                    LogicaAplicacion.setP9a_8(contarEnlacesPorProveedorRegion("Net Uno",1));
                    LogicaAplicacion.setP9a_9(contarEnlacesPorProveedorRegion("NGTV",1));
                    LogicaAplicacion.setP9a_10(contarEnlacesPorProveedorRegion("AES",1));
                    LogicaAplicacion.setP9a_11(contarEnlacesPorProveedorRegion("Enelven",1));
                    LogicaAplicacion.setP9a_12(contarEnlacesPorProveedorRegion("Otro",1));
                    
                    System.out.println("Cantv en Capital: "+LogicaAplicacion.getP9a_1());
                    System.out.println("Movistar en Capital: "+LogicaAplicacion.getP9a_2());
                    System.out.println("BT Latam en Capital: "+LogicaAplicacion.getP9a_3());
                    System.out.println("Global Crossing en Capital: "+LogicaAplicacion.getP9a_4());
                    System.out.println("Bantel en Capital: "+LogicaAplicacion.getP9a_5());
                    System.out.println("MCI en Capital: "+LogicaAplicacion.getP9a_6());
                    System.out.println("Infosat en Capital: "+LogicaAplicacion.getP9a_7());
                    System.out.println("Net Uno en Capital: "+LogicaAplicacion.getP9a_8());
                    System.out.println("NGTV en Capital: "+LogicaAplicacion.getP9a_9());
                    System.out.println("AES en Capital: "+LogicaAplicacion.getP9a_10());
                    System.out.println("Enelven en Capital: "+LogicaAplicacion.getP9a_11());
                    System.out.println("Otro en Capital: "+LogicaAplicacion.getP9a_12());
                
                    System.out.println("Central: ");
                    System.out.println("----------------------------------- ");
                    
                LogicaAplicacion.setP9b_1(contarEnlacesPorProveedorRegion("Cantv",2));
                LogicaAplicacion.setP9b_2(contarEnlacesPorProveedorRegion("Movistar / Telefónica",2));
                LogicaAplicacion.setP9b_3(contarEnlacesPorProveedorRegion("BT Latam (Comsat)",2));
                LogicaAplicacion.setP9b_4(contarEnlacesPorProveedorRegion("Global Crossing (mpsat)",2));
                LogicaAplicacion.setP9b_5(contarEnlacesPorProveedorRegion("Bantel",2));
                LogicaAplicacion.setP9b_6(contarEnlacesPorProveedorRegion("MCI / Verizon",2));
                LogicaAplicacion.setP9b_7(contarEnlacesPorProveedorRegion("Infosat",2));
                LogicaAplicacion.setP9b_8(contarEnlacesPorProveedorRegion("Net Uno",2));
                LogicaAplicacion.setP9b_9(contarEnlacesPorProveedorRegion("NGTV",2));
                LogicaAplicacion.setP9b_10(contarEnlacesPorProveedorRegion("AES",2));
                LogicaAplicacion.setP9b_11(contarEnlacesPorProveedorRegion("Enelven",2));
                LogicaAplicacion.setP9b_12(contarEnlacesPorProveedorRegion("Otro",2));
                
                
                System.out.println("Cantv:"+LogicaAplicacion.getP9b_1());
                System.out.println("Movistar / Telefónica "+LogicaAplicacion.getP9b_2());
                System.out.println("BT Latam (Comsat) "+LogicaAplicacion.getP9b_3());
                System.out.println("Global Crossing (mpsat) "+LogicaAplicacion.getP9b_4());
                System.out.println("Bantel "+LogicaAplicacion.getP9b_5());
                System.out.println("MCI / Verizon "+LogicaAplicacion.getP9b_6());
                System.out.println("Infosat "+LogicaAplicacion.getP9b_7());
                System.out.println("Net Uno "+LogicaAplicacion.getP9b_8());
                System.out.println("NGTV "+LogicaAplicacion.getP9b_9());
                System.out.println("AES "+LogicaAplicacion.getP9b_10());
                System.out.println("Enelven "+LogicaAplicacion.getP9b_11());
                System.out.println("Otro " +LogicaAplicacion.getP9b_12());

                System.out.println("Centro Occidental: ");
                    System.out.println("----------------------------------- ");

                LogicaAplicacion.setP9c_1(contarEnlacesPorProveedorRegion("Cantv",3));
                LogicaAplicacion.setP9c_2(contarEnlacesPorProveedorRegion("Movistar / Telefónica",3));
                LogicaAplicacion.setP9c_3(contarEnlacesPorProveedorRegion("BT Latam (Comsat)",3));
                LogicaAplicacion.setP9c_4(contarEnlacesPorProveedorRegion("Global Crossing (mpsat)",3));
                LogicaAplicacion.setP9c_5(contarEnlacesPorProveedorRegion("Bantel",3));
                LogicaAplicacion.setP9c_6(contarEnlacesPorProveedorRegion("MCI / Verizon",3));
                LogicaAplicacion.setP9c_7(contarEnlacesPorProveedorRegion("Infosat",3));
                LogicaAplicacion.setP9c_8(contarEnlacesPorProveedorRegion("Net Uno",3));
                LogicaAplicacion.setP9c_9(contarEnlacesPorProveedorRegion("NGTV",3));
                LogicaAplicacion.setP9c_10(contarEnlacesPorProveedorRegion("AES",3));
                LogicaAplicacion.setP9c_11(contarEnlacesPorProveedorRegion("Enelven",3));
                LogicaAplicacion.setP9c_12(contarEnlacesPorProveedorRegion("Otro",3));
                
                
                System.out.println("Cantv:"+LogicaAplicacion.getP9c_1());
                System.out.println("Movistar / Telefónica "+LogicaAplicacion.getP9c_2());
                System.out.println("BT "+LogicaAplicacion.getP9c_3());
                System.out.println("Global Crossing "+LogicaAplicacion.getP9c_4());
                System.out.println("Bantel "+LogicaAplicacion.getP9c_5());
                System.out.println("MCI / Verizon "+LogicaAplicacion.getP9c_6());
                System.out.println("Infosat "+ LogicaAplicacion.getP9c_7());
                System.out.println("Net Uno "+ LogicaAplicacion.getP9c_8());
                System.out.println("NGTV " +LogicaAplicacion.getP9c_9());
                System.out.println("AES: "+LogicaAplicacion.getP9c_10());
                System.out.println("Enelven "+LogicaAplicacion.getP9c_11());
                System.out.println("Otro "+LogicaAplicacion.getP9c_12());

                System.out.println("Occidental: ");
                    System.out.println("----------------------------------- ");

                LogicaAplicacion.setP9d_1(contarEnlacesPorProveedorRegion("Cantv",4));
                LogicaAplicacion.setP9d_2(contarEnlacesPorProveedorRegion("Movistar / Telefónica",4));
                LogicaAplicacion.setP9d_3(contarEnlacesPorProveedorRegion("BT Latam (Comsat)",4));
                LogicaAplicacion.setP9d_4(contarEnlacesPorProveedorRegion("Global Crossing (mpsat)",4));
                LogicaAplicacion.setP9d_5(contarEnlacesPorProveedorRegion("Bantel",4));
                LogicaAplicacion.setP9d_6(contarEnlacesPorProveedorRegion("MCI / Verizon",4));
                LogicaAplicacion.setP9d_7(contarEnlacesPorProveedorRegion("Infosat",4));
                LogicaAplicacion.setP9d_8(contarEnlacesPorProveedorRegion("Net Uno",4));
                LogicaAplicacion.setP9d_9(contarEnlacesPorProveedorRegion("NGTV",4));
                LogicaAplicacion.setP9d_10(contarEnlacesPorProveedorRegion("AES",4));
                LogicaAplicacion.setP9d_11(contarEnlacesPorProveedorRegion("Enelven",4));
                LogicaAplicacion.setP9d_12(contarEnlacesPorProveedorRegion("Otro",4));
                
                System.out.println("Cantv:"+LogicaAplicacion.getP9d_1());
                System.out.println("Movistar / Telefónica "+LogicaAplicacion.getP9d_2());
                System.out.println("BT "+LogicaAplicacion.getP9d_3());
                System.out.println("Global Crossing "+LogicaAplicacion.getP9d_4());
                System.out.println("Bantel "+LogicaAplicacion.getP9d_5());
                System.out.println("MCI / Verizon "+LogicaAplicacion.getP9d_6());
                System.out.println("Infosat "+LogicaAplicacion.getP9d_7());
                System.out.println("Net Uno "+LogicaAplicacion.getP9d_8());
                System.out.println("NGTV " +LogicaAplicacion.getP9d_9());
                System.out.println("AES: "+LogicaAplicacion.getP9d_10());
                System.out.println("Enelven: "+LogicaAplicacion.getP9d_11());
                System.out.println("Otro: "+LogicaAplicacion.getP9d_12());

                System.out.println("Oriental: ");
                    System.out.println("----------------------------------- ");

                LogicaAplicacion.setP9e_1(contarEnlacesPorProveedorRegion("Cantv",5));
                LogicaAplicacion.setP9e_2(contarEnlacesPorProveedorRegion("Movistar / Telefónica",5));
                LogicaAplicacion.setP9e_3(contarEnlacesPorProveedorRegion("BT Latam (Comsat)",5));
                LogicaAplicacion.setP9e_4(contarEnlacesPorProveedorRegion("Global Crossing (mpsat)",5));
                LogicaAplicacion.setP9e_5(contarEnlacesPorProveedorRegion("Bantel",5));
                LogicaAplicacion.setP9e_6(contarEnlacesPorProveedorRegion("MCI / Verizon",5));
                LogicaAplicacion.setP9e_7(contarEnlacesPorProveedorRegion("Infosat",5));
                LogicaAplicacion.setP9e_8(contarEnlacesPorProveedorRegion("Net Uno",5));
                LogicaAplicacion.setP9e_9(contarEnlacesPorProveedorRegion("NGTV",5));
                LogicaAplicacion.setP9e_10(contarEnlacesPorProveedorRegion("AES",5));
                LogicaAplicacion.setP9e_11(contarEnlacesPorProveedorRegion("Enelven",5));
                LogicaAplicacion.setP9e_12(contarEnlacesPorProveedorRegion("Otro",5));
                
              
                    
                System.out.println("Cantv:"+LogicaAplicacion.getP9e_1());
                System.out.println("Movistar / Telefónica "+LogicaAplicacion.getP9e_2());
                System.out.println("BT "+LogicaAplicacion.getP9e_3());
                System.out.println("Global Crossing "+LogicaAplicacion.getP9e_4());
                System.out.println("Bantel "+LogicaAplicacion.getP9e_5());
                System.out.println("MCI / Verizon "+LogicaAplicacion.getP9e_6());
                System.out.println("Infosat "+LogicaAplicacion.getP9e_7());
                System.out.println("Net Uno "+LogicaAplicacion.getP9e_8());
                System.out.println("NGTV " +LogicaAplicacion.getP9e_9());
                System.out.println("AES: "+LogicaAplicacion.getP9e_10());
                System.out.println("Enelven: "+LogicaAplicacion.getP9e_11());
                System.out.println("Otro: "+LogicaAplicacion.getP9e_12());

                    System.out.println("NS/NC: ");
                    System.out.println("----------------------------------- ");
                    
                LogicaAplicacion.setP9f_1(contarEnlacesPorProveedorRegion("Cantv",6));
                LogicaAplicacion.setP9f_2(contarEnlacesPorProveedorRegion("Movistar / Telefónica",6));
                LogicaAplicacion.setP9f_3(contarEnlacesPorProveedorRegion("BT Latam (Comsat)",6));
                LogicaAplicacion.setP9f_4(contarEnlacesPorProveedorRegion("Global Crossing (mpsat)",6));
                LogicaAplicacion.setP9f_5(contarEnlacesPorProveedorRegion("Bantel",6));
                LogicaAplicacion.setP9f_6(contarEnlacesPorProveedorRegion("MCI / Verizon",6));
                LogicaAplicacion.setP9f_7(contarEnlacesPorProveedorRegion("Infosat",6));
                LogicaAplicacion.setP9f_8(contarEnlacesPorProveedorRegion("Net Uno",6));
                LogicaAplicacion.setP9f_9(contarEnlacesPorProveedorRegion("NGTV",6));
                LogicaAplicacion.setP9f_10(contarEnlacesPorProveedorRegion("AES",6));
                LogicaAplicacion.setP9f_11(contarEnlacesPorProveedorRegion("Enelven",6));
                LogicaAplicacion.setP9f_12(contarEnlacesPorProveedorRegion("Otro",6));
                
                System.out.println("Cantv:"+LogicaAplicacion.getP9f_1());
                System.out.println("Movistar "+LogicaAplicacion.getP9f_2());
                System.out.println("BT:"+LogicaAplicacion.getP9f_3());
                System.out.println("GC:"+LogicaAplicacion.getP9f_4());
                System.out.println("Bantel "+LogicaAplicacion.getP9f_5());
                System.out.println("MCI "+LogicaAplicacion.getP9f_6());
                System.out.println("Infosat: "+LogicaAplicacion.getP9f_7());
                System.out.println("NetUno: "+LogicaAplicacion.getP9f_8());
                System.out.println("NGTV "+LogicaAplicacion.getP9f_9());
                System.out.println("AES: " +LogicaAplicacion.getP9f_10());
                System.out.println("Enelven: "+LogicaAplicacion.getP9f_11());
                System.out.println("Otro:"+LogicaAplicacion.getP9f_12());
				
                LogicaAplicacion.setP10_f1(contarEnlacesPorVelocidad("<= 64 Kbps"));
                LogicaAplicacion.setP10_f2(contarEnlacesPorVelocidad("65 a 256 Kbps"));
                LogicaAplicacion.setP10_f3(contarEnlacesPorVelocidad("256 Kbps o = 2048 Mbps"));
                LogicaAplicacion.setP10_f4(contarEnlacesPorVelocidad("2049 Kbps a 10 Mbps"));
                LogicaAplicacion.setP10_f5(contarEnlacesPorVelocidad("> 10 Mbps a 100 Mbps"));
                LogicaAplicacion.setP10_f6(contarEnlacesPorVelocidad("> a 100 Mbps y <= a 1 Gbps"));
                LogicaAplicacion.setP10_f7(contarEnlacesPorVelocidad(">  a 1Gbps y <= a 2.5 Gbps"));
                LogicaAplicacion.setP10_f8(contarEnlacesPorVelocidad("> a 2.5 Gbps"));
                LogicaAplicacion.setP10_f9(contarEnlacesPorVelocidad("No sabe / No contesta"));
                
                				 LogicaAplicacion.setP10a_1(contarEnlacesPorVelocidadRegion("<= 64 Kbps",1));
                LogicaAplicacion.setP10a_2(contarEnlacesPorVelocidadRegion("65 a 256 Kbps",1));
                LogicaAplicacion.setP10a_3(contarEnlacesPorVelocidadRegion("256 Kbps o = 2048 Mbps",1));
                LogicaAplicacion.setP10a_4(contarEnlacesPorVelocidadRegion("2049 Kbps a 10 Mbps",1));
                LogicaAplicacion.setP10a_5(contarEnlacesPorVelocidadRegion("> 10 Mbps a 100 Mbps",1));
                LogicaAplicacion.setP10a_6(contarEnlacesPorVelocidadRegion("> a 100 Mbps y <= a 1 Gbps",1));
                LogicaAplicacion.setP10a_7(contarEnlacesPorVelocidadRegion(">  a 1Gbps y <= a 2.5 Gbps",1));
                LogicaAplicacion.setP10a_8(contarEnlacesPorVelocidadRegion("> a 2.5 Gbps",1));
                LogicaAplicacion.setP10a_9(contarEnlacesPorVelocidadRegion("No sabe / No contesta",1));
                
                LogicaAplicacion.setP10b_1(contarEnlacesPorVelocidadRegion("<= 64 Kbps",2));
                LogicaAplicacion.setP10b_2(contarEnlacesPorVelocidadRegion("65 a 256 Kbps",2));
                LogicaAplicacion.setP10b_3(contarEnlacesPorVelocidadRegion("256 Kbps o = 2048 Mbps",2));
                LogicaAplicacion.setP10b_4(contarEnlacesPorVelocidadRegion("2049 Kbps a 10 Mbps",2));
                LogicaAplicacion.setP10b_5(contarEnlacesPorVelocidadRegion("> 10 Mbps a 100 Mbps",2));
                LogicaAplicacion.setP10b_6(contarEnlacesPorVelocidadRegion("> a 100 Mbps y <= a 1 Gbps",2));
                LogicaAplicacion.setP10b_7(contarEnlacesPorVelocidadRegion(">  a 1Gbps y <= a 2.5 Gbps",2));
                LogicaAplicacion.setP10b_8(contarEnlacesPorVelocidadRegion("> a 2.5 Gbps",2));
                LogicaAplicacion.setP10b_9(contarEnlacesPorVelocidadRegion("No sabe / No contesta",2));
                
                LogicaAplicacion.setP10c_1(contarEnlacesPorVelocidadRegion("<= 64 Kbps",3));
                LogicaAplicacion.setP10c_2(contarEnlacesPorVelocidadRegion("65 a 256 Kbps",3));
                LogicaAplicacion.setP10c_3(contarEnlacesPorVelocidadRegion("256 Kbps o = 2048 Mbps",3));
                LogicaAplicacion.setP10c_4(contarEnlacesPorVelocidadRegion("2049 Kbps a 10 Mbps",3));
                LogicaAplicacion.setP10c_5(contarEnlacesPorVelocidadRegion("> 10 Mbps a 100 Mbps",3));
                LogicaAplicacion.setP10c_6(contarEnlacesPorVelocidadRegion("> a 100 Mbps y <= a 1 Gbps",3));
                LogicaAplicacion.setP10c_7(contarEnlacesPorVelocidadRegion(">  a 1Gbps y <= a 2.5 Gbps",3));
                LogicaAplicacion.setP10c_8(contarEnlacesPorVelocidadRegion("> a 2.5 Gbps",3));
                LogicaAplicacion.setP10c_9(contarEnlacesPorVelocidadRegion("No sabe / No contesta",3));
                
                LogicaAplicacion.setP10d_1(contarEnlacesPorVelocidadRegion("<= 64 Kbps",4));
                LogicaAplicacion.setP10d_2(contarEnlacesPorVelocidadRegion("65 a 256 Kbps",4));
		LogicaAplicacion.setP10d_3(contarEnlacesPorVelocidadRegion("256 Kbps o = 2048 Mbps",4));
                LogicaAplicacion.setP10d_4(contarEnlacesPorVelocidadRegion("2049 Kbps a 10 Mbps",4));
                LogicaAplicacion.setP10d_5(contarEnlacesPorVelocidadRegion("> 10 Mbps a 100 Mbps",4));
                LogicaAplicacion.setP10d_6(contarEnlacesPorVelocidadRegion("> a 100 Mbps y <= a 1 Gbps",4));
                LogicaAplicacion.setP10d_7(contarEnlacesPorVelocidadRegion(">  a 1Gbps y <= a 2.5 Gbps",4));
                LogicaAplicacion.setP10d_8(contarEnlacesPorVelocidadRegion("> a 2.5 Gbps",4));
                LogicaAplicacion.setP10d_9(contarEnlacesPorVelocidadRegion("No sabe / No contesta",4));
                
                LogicaAplicacion.setP10e_1(contarEnlacesPorVelocidadRegion("<= 64 Kbps",5));
                LogicaAplicacion.setP10e_2(contarEnlacesPorVelocidadRegion("65 a 256 Kbps",5));
		LogicaAplicacion.setP10e_3(contarEnlacesPorVelocidadRegion("256 Kbps o = 2048 Mbps",5));
                LogicaAplicacion.setP10e_4(contarEnlacesPorVelocidadRegion("2049 Kbps a 10 Mbps",5));
                LogicaAplicacion.setP10e_5(contarEnlacesPorVelocidadRegion("> 10 Mbps a 100 Mbps",5));
                LogicaAplicacion.setP10e_6(contarEnlacesPorVelocidadRegion("> a 100 Mbps y <= a 1 Gbps",5));
                LogicaAplicacion.setP10e_7(contarEnlacesPorVelocidadRegion(">  a 1Gbps y <= a 2.5 Gbps",5));
                LogicaAplicacion.setP10e_8(contarEnlacesPorVelocidadRegion("> a 2.5 Gbps",5));
                LogicaAplicacion.setP10e_9(contarEnlacesPorVelocidadRegion("No sabe / No contesta",5));
                
                
                LogicaAplicacion.setP10f_1(contarEnlacesPorVelocidadRegion("<= 64 Kbps",6));
                LogicaAplicacion.setP10f_2(contarEnlacesPorVelocidadRegion("65 a 256 Kbps",6));
		LogicaAplicacion.setP10f_3(contarEnlacesPorVelocidadRegion("256 Kbps o = 2048 Mbps",6));
                LogicaAplicacion.setP10f_4(contarEnlacesPorVelocidadRegion("2049 Kbps a 10 Mbps",6));
                LogicaAplicacion.setP10f_5(contarEnlacesPorVelocidadRegion("> 10 Mbps a 100 Mbps",6));
                LogicaAplicacion.setP10f_6(contarEnlacesPorVelocidadRegion("> a 100 Mbps y <= a 1 Gbps",6));
                LogicaAplicacion.setP10f_7(contarEnlacesPorVelocidadRegion(">  a 1Gbps y <= a 2.5 Gbps",6));
                LogicaAplicacion.setP10f_8(contarEnlacesPorVelocidadRegion("> a 2.5 Gbps",6));
                LogicaAplicacion.setP10f_9(contarEnlacesPorVelocidadRegion("No sabe / No contesta",6));
    }
    
    private Boolean contieneLetras(String cadena){
        matcher = patron.matcher(cadena);

            if (matcher.find())
                return true;
            else return false;
    }

    private void bloquearRadios(){
         jCCantv.setEnabled(false);
         jCAES.setEnabled(false);
         jCBT.setEnabled(false);
         jCBantel.setEnabled(false);
         jCEnelven.setEnabled(false);
         jCGlobal.setEnabled(false);
         jCInfosat.setEnabled(false);
         jCNGTV.setEnabled(false);
         jCMovistar.setEnabled(false);
         jCMCI.setEnabled(false);
         jCOtro.setEnabled(false);
         jCNetUno.setEnabled(false);
    }

    private void InsertarEnTabla(String proveedor, String enlaces,
                                    String ciudad, String velocidades){

        ((DefaultTableModel) this.jTInformacionProveedores.getModel()).
         insertRow(0,new Object[]{proveedor,ciudad,enlaces,velocidades});
        
    }
    
     private int obtenerEnlacesTotalesPorRegion(int region){
      int total = 0; 
        for (Historica hist: this.getInserts())
            if (hist.getLug_id() == region)
                total = total + hist.getCantidad();
        return total;
    }
     
     private int obtenerEnlacesTotales(){
        int total = 0;
            for (Historica hist: this.getInserts())
                total = total + hist.getCantidad();
            
        return total;
    }
     
     private int contarEnlacesPorProveedor(String proveedor){
        int total = 0; 
        for (Historica hist: this.getInserts())
            if (hist.getProveedor().equals(proveedor))
                total = total + hist.getCantidad();
        return total;
    }
     
      private int contarEnlacesPorProveedorRegion(String proveedor, int region){
        int total = 0;
        
        for (Historica hist: this.getInserts())
            if (hist.getProveedor().equals(proveedor) && hist.getLug_id() == region)
                total = total + hist.getCantidad();
        
        return total;
    }
      
      private int contarEnlacesPorVelocidad(String velocidad){
        int total = 0;
        
        for (Historica hist: this.getInserts())
            if (hist.getVelocidad().equals(velocidad))
                total = total + hist.getCantidad();
        
        return total;
    }
      
       private int contarEnlacesPorVelocidadRegion(String velocidad, int region){
        int total = 0;
        
        for (Historica hist: this.getInserts())
            if (hist.getVelocidad().equals(velocidad) && hist.getLug_id() == region)
                total = total + hist.getCantidad();
        
        return total;
    }
      
    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new RegistroEnlancesDedicados().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jBAceptar;
    private javax.swing.JButton jBAceptarCantidad;
    private javax.swing.JButton jBAgregarInfoTabla;
    private javax.swing.JButton jBAgregarProveedorNuevo;
    private javax.swing.JButton jBAgregarTabla;
    private javax.swing.JButton jBFinalizarSeleccion;
    private javax.swing.JButton jBPrev;
    private javax.swing.JCheckBox jCAES;
    private javax.swing.JCheckBox jCBT;
    private javax.swing.JCheckBox jCBantel;
    private javax.swing.JCheckBox jCCantv;
    private javax.swing.JCheckBox jCEnelven;
    private javax.swing.JCheckBox jCGlobal;
    private javax.swing.JCheckBox jCInfosat;
    private javax.swing.JCheckBox jCMCI;
    private javax.swing.JCheckBox jCMovistar;
    private javax.swing.JCheckBox jCNGTV;
    private javax.swing.JCheckBox jCNetUno;
    private javax.swing.JCheckBox jCOtro;
    private javax.swing.JComboBox jCProveedores;
    private javax.swing.JComboBox jCProveedoresTabla;
    private javax.swing.JComboBox jComboPaisesCiudades;
    private javax.swing.JComboBox jComboPaisesCiudadesDinamico;
    private javax.swing.JComboBox jComboVelocidades;
    private javax.swing.JComboBox jComboVelocidadesDinamico;
    private javax.swing.JLabel jLCuentaActualizada;
    private javax.swing.JLabel jLInformacionProveedor1;
    private javax.swing.JLabel jLLogo;
    private javax.swing.JLabel jLSponsor;
    private javax.swing.JLabel jLTimer;
    private javax.swing.JLabel jLTitulo;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JLayeredPane jLayeredPane1;
    private javax.swing.JLayeredPane jLayeredPane2;
    private javax.swing.JLayeredPane jLayeredPane3;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTextField jTCantidad;
    private javax.swing.JTextArea jTComentarios;
    private javax.swing.JTextField jTEnlances;
    private javax.swing.JTextField jTEnlancesProveedor;
    private javax.swing.JTable jTInformacionProveedores;
    private javax.swing.JTextField jTOtros;
    // End of variables declaration//GEN-END:variables
public void run() {
        try {
            while (inicio){

                if(segundos != 59) {
                   segundos++;
                }else{
                    if(minutos != 59){
                        segundos = 0;
                        minutos++;
                    }else{
                            horas++;
                            minutos = 0;
                            segundos = 0;
                    }
                }

                if (minutos >= 10)
                    jLTimer.setForeground(Color.red);

                    jLTimer.setText(horas+":"+minutos+":"+segundos);

                Thread.sleep(999);
            }

        } catch (InterruptedException ex) {
            System.out.println("Error en el sleep de aplicacion = " +ex.getMessage());
        }
    }
}
